package com.itany.corejava.code12_线程;

import java.util.ArrayList;
import java.util.List;

/**
 * @author MissChen
 * @version 1.0
 * @date 2023 年12月01日 10:09
 */
public class Test15_线程单例 {
    public static void main(String[] args) {
        List<User> list=new ArrayList<>();

        // 该类提供了线程局部 (thread-local) 变量
        ThreadLocal<User> local=new ThreadLocal<>();

        Thread t1=new Thread(new Runnable() {
            @Override
            public void run() {
                User u1=new User();
                User u2=new User();
                list.add(u1);
                list.add(u2);

                System.out.println("t1中获取list的数据:"+list.get(0));
                System.out.println("t1中获取list的数据:"+list.get(1));
                local.set(u1);
                local.set(u2);
                System.out.println("t1中获取local的数据:"+local.get());

            }
        },"t1");
        t1.start();
        t1.setPriority(10);

       Thread t2= new Thread(new Runnable() {
            @Override
            public void run() {
                if(!list.isEmpty()){
                    System.out.println("t2中获取list的数据:"+list.get(0));
                    System.out.println("t2中获取list的数据:"+list.get(1));
                    //不能获取t1线程中存储的数据，ThreadLocal为每个线程提供了一个独立的副本，t2,没有set元素，那么get的值为null
                    System.out.println("t2中获取local的数据:"+local.get());
                }else{
                    System.out.println("嘿嘿，你抢到了，但是呢，没有数据~");
                }

            }
        },"t2");
       t2.start();
    }
}
class User{

}